Installation¶
In [ ]:
Copied!
!pip install bayesian-optimization
!pip install bayesian-optimization
Sample Strategy¶
In [1]:
Copied!
# import talib.abstract as ta
from lettrade import DataFeed, Strategy, indicator as i
from lettrade.exchange.backtest import ForexBackTestAccount, let_backtest
from lettrade.indicator.vendor.qtpylib import inject_indicators
inject_indicators()
class SmaCross(Strategy):
ema1_period = 9
ema2_period = 21
def indicators(self, df: DataFeed):
# df["ema1"] = ta.EMA(df, timeperiod=self.ema1_period)
# df["ema2"] = ta.EMA(df, timeperiod=self.ema2_period)
df["ema1"] = df.close.ema(window=self.ema1_period)
df["ema2"] = df.close.ema(window=self.ema2_period)
df["signal_ema_crossover"] = i.crossover(df.ema1, df.ema2)
df["signal_ema_crossunder"] = i.crossunder(df.ema1, df.ema2)
def next(self, df: DataFeed):
if len(self.orders) > 0 or len(self.positions) > 0:
return
if df.l.signal_ema_crossover[-1]:
price = df.l.close[-1]
self.buy(size=0.1, sl=price - 0.001, tp=price + 0.001)
elif df.l.signal_ema_crossunder[-1]:
price = df.l.close[-1]
self.sell(size=0.1, sl=price + 0.001, tp=price - 0.001)
lt = let_backtest(
strategy=SmaCross,
datas="example/data/data/EURUSD_5m-0_10000.csv",
account=ForexBackTestAccount,
# plotter=None,
)
# import talib.abstract as ta
from lettrade import DataFeed, Strategy, indicator as i
from lettrade.exchange.backtest import ForexBackTestAccount, let_backtest
from lettrade.indicator.vendor.qtpylib import inject_indicators
inject_indicators()
class SmaCross(Strategy):
ema1_period = 9
ema2_period = 21
def indicators(self, df: DataFeed):
# df["ema1"] = ta.EMA(df, timeperiod=self.ema1_period)
# df["ema2"] = ta.EMA(df, timeperiod=self.ema2_period)
df["ema1"] = df.close.ema(window=self.ema1_period)
df["ema2"] = df.close.ema(window=self.ema2_period)
df["signal_ema_crossover"] = i.crossover(df.ema1, df.ema2)
df["signal_ema_crossunder"] = i.crossunder(df.ema1, df.ema2)
def next(self, df: DataFeed):
if len(self.orders) > 0 or len(self.positions) > 0:
return
if df.l.signal_ema_crossover[-1]:
price = df.l.close[-1]
self.buy(size=0.1, sl=price - 0.001, tp=price + 0.001)
elif df.l.signal_ema_crossunder[-1]:
price = df.l.close[-1]
self.sell(size=0.1, sl=price + 0.001, tp=price - 0.001)
lt = let_backtest(
strategy=SmaCross,
datas="example/data/data/EURUSD_5m-0_10000.csv",
account=ForexBackTestAccount,
# plotter=None,
)
Optimize¶
In [3]:
Copied!
from bayes_opt import BayesianOptimization
lettrade_model = lt.optimize_model()
def train_model(**params):
params = {
"ema1_period": int(params["ema1_period"]),
"ema2_period": int(params["ema2_period"]),
}
# Model
result = lettrade_model(params)
# Score
return result["equity"]
pbounds = {"ema1_period": (5, 25), "ema2_period": (10, 50)}
optimizer = BayesianOptimization(
f=train_model,
pbounds=pbounds,
random_state=1,
)
optimizer.maximize(
init_points=2,
n_iter=200,
)
from bayes_opt import BayesianOptimization
lettrade_model = lt.optimize_model()
def train_model(**params):
params = {
"ema1_period": int(params["ema1_period"]),
"ema2_period": int(params["ema2_period"]),
}
# Model
result = lettrade_model(params)
# Score
return result["equity"]
pbounds = {"ema1_period": (5, 25), "ema2_period": (10, 50)}
optimizer = BayesianOptimization(
f=train_model,
pbounds=pbounds,
random_state=1,
)
optimizer.maximize(
init_points=2,
n_iter=200,
)
| iter | target | ema1_p... | ema2_p... | ------------------------------------------------- | 1 | 922.0 | 13.34 | 38.81 | | 2 | 875.4 | 5.002 | 22.09 | | 3 | 921.0 | 13.3 | 39.0 | | 4 | 971.3 | 18.52 | 33.86 | | 5 | 864.5 | 25.0 | 30.34 | | 6 | 1.031e+03 | 15.36 | 31.85 | | 7 | 1.05e+03 | 14.5 | 28.01 | | 8 | 909.8 | 17.22 | 21.41 | | 9 | 919.6 | 10.73 | 30.04 | | 10 | 1.011e+03 | 17.12 | 28.92 | | 11 | 989.6 | 13.57 | 25.4 | | 12 | 1.01e+03 | 25.0 | 50.0 | | 13 | 1e+03 | 20.13 | 50.0 | | 14 | 1.008e+03 | 23.5 | 45.25 | | 15 | 971.5 | 13.03 | 49.99 | | 16 | 1.118e+03 | 24.91 | 10.16 | | 17 | 1.008e+03 | 21.38 | 10.4 | | 18 | 1.169e+03 | 24.99 | 12.98 | | 19 | 990.6 | 25.0 | 16.16 | | 20 | 1.158e+03 | 23.87 | 12.29 | | 21 | 1.148e+03 | 24.79 | 11.96 | | 22 | 1.159e+03 | 22.27 | 14.03 | | 23 | 1.117e+03 | 18.79 | 14.72 | | 24 | 1.059e+03 | 14.08 | 13.05 | | 25 | 923.6 | 8.15 | 10.0 | | 26 | 905.5 | 5.0 | 50.0 | | 27 | 931.9 | 5.0 | 38.91 | | 28 | 1.001e+03 | 25.0 | 39.59 | | 29 | 1.139e+03 | 20.65 | 16.19 | | 30 | 980.7 | 12.11 | 16.74 | | 31 | 1.12e+03 | 15.66 | 10.0 | | 32 | 1.059e+03 | 17.29 | 11.85 | | 33 | 1.154e+03 | 13.36 | 10.19 | | 34 | 958.8 | 18.21 | 44.02 | | 35 | 1.169e+03 | 23.68 | 13.74 | | 36 | 1.148e+03 | 20.63 | 14.68 | | 37 | 1.169e+03 | 23.13 | 13.15 | | 38 | 1.129e+03 | 24.16 | 13.11 | | 39 | 1.168e+03 | 18.55 | 17.01 | | 40 | 1e+03 | 16.67 | 16.31 | | 41 | 1.1e+03 | 19.84 | 18.24 | | 42 | 1e+03 | 11.9 | 11.48 | | 43 | 1.184e+03 | 14.49 | 10.92 | | 44 | 1.159e+03 | 25.0 | 22.99 | | 45 | 941.1 | 22.97 | 23.43 | | 46 | 1.049e+03 | 25.0 | 21.12 | | 47 | 1e+03 | 24.94 | 24.76 | | 48 | 1.08e+03 | 22.61 | 15.52 | | 49 | 1.168e+03 | 19.31 | 16.32 | | 50 | 832.2 | 5.0 | 31.88 | | 51 | 990.6 | 9.272 | 44.54 | | 52 | 940.6 | 5.0 | 15.35 | | 53 | 903.3 | 20.28 | 38.8 | | 54 | 1.117e+03 | 20.74 | 12.74 | | 55 | 851.4 | 5.0 | 44.28 | | 56 | 991.8 | 10.69 | 21.4 | | 57 | 983.1 | 13.37 | 45.28 | | 58 | 1.128e+03 | 23.3 | 11.13 | | 59 | 920.4 | 25.0 | 35.58 | | 60 | 889.9 | 9.795 | 35.56 | | 61 | 951.9 | 8.697 | 25.63 | | 62 | 1.184e+03 | 14.27 | 10.07 | | 63 | 989.0 | 16.82 | 48.69 | | 64 | 966.4 | 9.206 | 49.78 | | 65 | 991.4 | 25.0 | 42.71 | | 66 | 1.09e+03 | 24.98 | 14.45 | | 67 | 805.2 | 8.466 | 17.84 | | 68 | 1.02e+03 | 18.29 | 25.92 | | 69 | 941.2 | 20.6 | 29.15 | | 70 | 901.6 | 5.0 | 10.0 | | 71 | 961.5 | 14.86 | 34.82 | | 72 | 931.4 | 20.66 | 46.99 | | 73 | 1.08e+03 | 15.34 | 11.78 | | 74 | 1e+03 | 18.08 | 18.34 | | 75 | 1.01e+03 | 22.07 | 18.61 | | 76 | 880.2 | 9.328 | 40.89 | | 77 | 1.049e+03 | 18.56 | 10.05 | | 78 | 882.6 | 5.0 | 26.96 | | 79 | 1.164e+03 | 13.78 | 11.11 | | 80 | 1.129e+03 | 19.37 | 17.16 | | 81 | 1.168e+03 | 18.14 | 16.05 | | 82 | 1.016e+03 | 25.0 | 47.21 | | 83 | 1.168e+03 | 22.34 | 12.15 | | 84 | 974.0 | 16.34 | 41.14 | | 85 | 821.7 | 13.49 | 21.54 | | 86 | 918.2 | 21.74 | 42.48 | | 87 | 1.158e+03 | 21.96 | 13.07 | | 88 | 923.7 | 10.85 | 46.89 | | 89 | 1.101e+03 | 23.06 | 14.07 | | 90 | 1.006e+03 | 19.01 | 12.76 | | 91 | 1.149e+03 | 21.56 | 14.85 | | 92 | 923.2 | 21.72 | 33.55 | | 93 | 1.158e+03 | 21.29 | 13.86 | | 94 | 1e+03 | 20.49 | 20.64 | | 95 | 1.01e+03 | 13.94 | 30.14 | | 96 | 1.009e+03 | 16.0 | 26.27 | | 97 | 841.1 | 9.332 | 13.73 | | 98 | 985.5 | 17.17 | 37.25 | | 99 | 1.01e+03 | 22.63 | 50.0 | | 100 | 880.7 | 5.143 | 35.8 | | 101 | 913.7 | 13.63 | 42.64 | | 102 | 1.168e+03 | 19.58 | 15.44 | | 103 | 932.0 | 15.93 | 46.05 | | 104 | 840.4 | 11.58 | 26.91 | | 105 | 1.01e+03 | 12.79 | 32.74 | | 106 | 1.158e+03 | 23.05 | 12.15 | | 107 | 961.2 | 17.78 | 31.3 | | 108 | 1.023e+03 | 8.636 | 22.57 | | 109 | 941.2 | 20.78 | 26.03 | | 110 | 1.166e+03 | 18.79 | 15.91 | | 111 | 1.007e+03 | 16.62 | 13.95 | | 112 | 1.184e+03 | 14.1 | 10.57 | | 113 | 940.8 | 7.458 | 47.12 | | 114 | 1.184e+03 | 14.89 | 10.32 | | 115 | 999.5 | 18.99 | 23.66 | | 116 | 949.5 | 24.97 | 18.99 | | 117 | 1.049e+03 | 24.5 | 22.33 | | 118 | 1.116e+03 | 23.73 | 10.0 | | 119 | 1.168e+03 | 18.5 | 16.46 | | 120 | 911.5 | 8.835 | 32.3 | | 121 | 880.0 | 5.046 | 18.56 | | 122 | 1.148e+03 | 24.21 | 11.24 | | 123 | 962.2 | 15.41 | 50.0 | | 124 | 1.097e+03 | 21.39 | 11.92 | | 125 | 1.178e+03 | 11.87 | 10.0 | | 126 | 1e+03 | 10.56 | 10.18 | | 127 | 1.139e+03 | 12.7 | 10.04 | | 128 | 990.6 | 13.53 | 15.0 | | 129 | 1.08e+03 | 21.78 | 16.77 | | 130 | 947.8 | 23.09 | 37.81 | | 131 | 863.8 | 10.61 | 23.71 | | 132 | 959.9 | 16.52 | 24.21 | | 133 | 1.148e+03 | 20.36 | 15.5 | | 134 | 1.011e+03 | 5.0 | 12.84 | | 135 | 1.184e+03 | 14.74 | 10.0 | | 136 | 1.184e+03 | 14.52 | 10.43 | | 137 | 960.3 | 7.708 | 28.99 | | 138 | 1.166e+03 | 17.95 | 16.78 | | 139 | 940.7 | 18.11 | 50.0 | | 140 | 1.017e+03 | 25.0 | 45.27 | | 141 | 1.168e+03 | 22.49 | 12.67 | | 142 | 961.8 | 19.81 | 35.99 | | 143 | 879.5 | 8.582 | 20.84 | | 144 | 1.033e+03 | 7.081 | 24.03 | | 145 | 996.9 | 23.18 | 47.91 | | 146 | 1.127e+03 | 20.13 | 13.88 | | 147 | 1.17e+03 | 14.2 | 11.49 | | 148 | 923.5 | 18.7 | 41.33 | | 149 | 1.049e+03 | 25.0 | 23.51 | | 150 | 981.4 | 24.98 | 27.02 | | 151 | 973.7 | 13.96 | 18.19 | | 152 | 1.08e+03 | 20.63 | 17.45 | | 153 | 970.6 | 15.55 | 29.6 | | 154 | 961.4 | 14.02 | 47.71 | | 155 | 1.049e+03 | 24.98 | 22.57 | | 156 | 959.1 | 23.3 | 20.83 | | 157 | 881.3 | 7.992 | 38.11 | | 158 | 1.08e+03 | 17.09 | 10.3 | | 159 | 922.5 | 5.0 | 41.39 | | 160 | 970.8 | 12.59 | 35.8 | | 161 | 960.8 | 18.53 | 27.76 | | 162 | 941.3 | 11.17 | 43.54 | | 163 | 1.119e+03 | 17.77 | 15.05 | | 164 | 940.8 | 22.92 | 27.71 | | 165 | 1.012e+03 | 11.51 | 19.26 | | 166 | 884.8 | 24.8 | 33.0 | | 167 | 971.5 | 15.79 | 38.79 | | 168 | 911.3 | 5.035 | 47.45 | | 169 | 937.9 | 23.42 | 40.72 | | 170 | 961.7 | 16.58 | 33.52 | | 171 | 1.148e+03 | 24.98 | 11.13 | | 172 | 1.129e+03 | 24.97 | 13.62 | | 173 | 941.5 | 20.15 | 31.63 | | 174 | 928.6 | 18.3 | 46.82 | | 175 | 1.169e+03 | 21.41 | 15.7 | | 176 | 891.0 | 7.671 | 42.85 | | 177 | 900.6 | 6.871 | 12.27 | | 178 | 1.15e+03 | 13.45 | 12.11 | | 179 | 849.7 | 12.57 | 13.27 | | 180 | 852.6 | 5.0 | 24.54 | | 181 | 949.0 | 21.04 | 44.71 | | 182 | 1.09e+03 | 24.07 | 14.53 | | 183 | 1.141e+03 | 16.05 | 10.99 | | 184 | 950.0 | 10.93 | 38.37 | | 185 | 1.12e+03 | 15.24 | 10.87 | | 186 | 952.7 | 11.13 | 50.0 | | 187 | 1.05e+03 | 20.6 | 22.67 | | 188 | 913.5 | 16.03 | 43.42 | | 189 | 987.5 | 19.71 | 11.13 | | 190 | 1.166e+03 | 19.73 | 14.75 | | 191 | 969.9 | 11.15 | 33.38 | | 192 | 1.097e+03 | 22.32 | 11.42 | | 193 | 1.06e+03 | 14.14 | 12.22 | | 194 | 1.007e+03 | 15.01 | 14.48 | | 195 | 974.5 | 7.309 | 49.96 | | 196 | 1.164e+03 | 13.04 | 11.62 | | 197 | 813.7 | 15.88 | 18.95 | | 198 | 1e+03 | 19.4 | 19.51 | | 199 | 1.139e+03 | 12.18 | 10.46 | | 200 | 971.1 | 15.01 | 36.88 | | 201 | 1.128e+03 | 24.51 | 23.1 | | 202 | 990.2 | 16.04 | 27.8 | =================================================
In [4]:
Copied!
optimizer.max
optimizer.max
Out[4]:
{'target': 1183.88,
'params': {'ema1_period': 14.491292925643293,
'ema2_period': 10.915994213005602}}
Plot¶
In [5]:
Copied!
lt.plotter.heatmap(x="ema1_period", y="ema2_period", z="equity")
lt.plotter.heatmap(x="ema1_period", y="ema2_period", z="equity")
In [6]:
Copied!
lt.plotter.contour(x="ema1_period", y="ema2_period", z="equity")
lt.plotter.contour(x="ema1_period", y="ema2_period", z="equity")
Plot plotly¶
Init Plotly environment¶
In [7]:
Copied!
import plotly.io as pio
pio.renderers.default = "notebook"
pio.templates.default = "plotly_dark"
import plotly.io as pio
pio.renderers.default = "notebook"
pio.templates.default = "plotly_dark"
In [8]:
Copied!
optimizer.res
optimizer.res
Out[8]:
[{'target': 921.98,
'params': {'ema1_period': 13.34044009405148,
'ema2_period': 38.81297973768632}},
{'target': 875.38,
'params': {'ema1_period': 5.002287496346898,
'ema2_period': 22.09330290527359}},
{'target': 920.98,
'params': {'ema1_period': 13.3001407276959,
'ema2_period': 39.00039537269421}},
{'target': 971.28,
'params': {'ema1_period': 18.52065437272396,
'ema2_period': 33.863457550993026}},
{'target': 864.48,
'params': {'ema1_period': 25.0, 'ema2_period': 30.33928758479602}},
{'target': 1031.18,
'params': {'ema1_period': 15.357337759328532,
'ema2_period': 31.848048898351127}},
{'target': 1049.68,
'params': {'ema1_period': 14.50054591701167,
'ema2_period': 28.014062012896545}},
{'target': 909.78,
'params': {'ema1_period': 17.22182187422121,
'ema2_period': 21.409928335006267}},
{'target': 919.58,
'params': {'ema1_period': 10.73144001218241,
'ema2_period': 30.04066974540485}},
{'target': 1010.88,
'params': {'ema1_period': 17.115149925746156,
'ema2_period': 28.917781696081047}},
{'target': 989.58,
'params': {'ema1_period': 13.570348096696343,
'ema2_period': 25.404096691580644}},
{'target': 1010.28, 'params': {'ema1_period': 25.0, 'ema2_period': 50.0}},
{'target': 1000.18,
'params': {'ema1_period': 20.13399772503066, 'ema2_period': 50.0}},
{'target': 1008.28,
'params': {'ema1_period': 23.495361736035818,
'ema2_period': 45.25289027522756}},
{'target': 971.48,
'params': {'ema1_period': 13.029692423735854,
'ema2_period': 49.99334297246561}},
{'target': 1118.38,
'params': {'ema1_period': 24.906030330322487,
'ema2_period': 10.157182041157764}},
{'target': 1007.98,
'params': {'ema1_period': 21.37923376276011,
'ema2_period': 10.395845348298236}},
{'target': 1168.98,
'params': {'ema1_period': 24.99158812480974,
'ema2_period': 12.98307192822218}},
{'target': 990.58,
'params': {'ema1_period': 25.0, 'ema2_period': 16.160763482984994}},
{'target': 1158.38,
'params': {'ema1_period': 23.86634900198165,
'ema2_period': 12.294075748068922}},
{'target': 1148.18,
'params': {'ema1_period': 24.790930666853647,
'ema2_period': 11.963961085904518}},
{'target': 1158.88,
'params': {'ema1_period': 22.265459234415193,
'ema2_period': 14.030698582520076}},
{'target': 1116.68,
'params': {'ema1_period': 18.787132211610984,
'ema2_period': 14.716136499573038}},
{'target': 1059.38,
'params': {'ema1_period': 14.075693848032216,
'ema2_period': 13.051766130408804}},
{'target': 923.58,
'params': {'ema1_period': 8.149890181902189, 'ema2_period': 10.0}},
{'target': 905.48, 'params': {'ema1_period': 5.0, 'ema2_period': 50.0}},
{'target': 931.88,
'params': {'ema1_period': 5.0, 'ema2_period': 38.90563746761259}},
{'target': 1001.38,
'params': {'ema1_period': 25.0, 'ema2_period': 39.5881538636381}},
{'target': 1139.08,
'params': {'ema1_period': 20.651108713610626,
'ema2_period': 16.189379061835858}},
{'target': 980.68,
'params': {'ema1_period': 12.111792096067155,
'ema2_period': 16.738731828066545}},
{'target': 1120.48,
'params': {'ema1_period': 15.659039064119396, 'ema2_period': 10.0}},
{'target': 1059.08,
'params': {'ema1_period': 17.294894350267416,
'ema2_period': 11.854171255613114}},
{'target': 1153.78,
'params': {'ema1_period': 13.358213084249549,
'ema2_period': 10.194642176893609}},
{'target': 958.78,
'params': {'ema1_period': 18.205943303763114,
'ema2_period': 44.0207020913403}},
{'target': 1168.98,
'params': {'ema1_period': 23.680446326785688,
'ema2_period': 13.735838545453007}},
{'target': 1148.28,
'params': {'ema1_period': 20.62613055844256,
'ema2_period': 14.675593400394167}},
{'target': 1168.98,
'params': {'ema1_period': 23.125098159210452,
'ema2_period': 13.152688839392106}},
{'target': 1129.28,
'params': {'ema1_period': 24.15750803502253,
'ema2_period': 13.106871154420155}},
{'target': 1167.88,
'params': {'ema1_period': 18.55024818513378,
'ema2_period': 17.011813859705974}},
{'target': 1000.0,
'params': {'ema1_period': 16.666731907272982,
'ema2_period': 16.309972709233975}},
{'target': 1099.88,
'params': {'ema1_period': 19.84295688106342,
'ema2_period': 18.236897349447002}},
{'target': 1000.0,
'params': {'ema1_period': 11.900884939383173,
'ema2_period': 11.476046863358087}},
{'target': 1183.88,
'params': {'ema1_period': 14.491292925643293,
'ema2_period': 10.915994213005602}},
{'target': 1158.78,
'params': {'ema1_period': 25.0, 'ema2_period': 22.986776489537558}},
{'target': 941.08,
'params': {'ema1_period': 22.970213360673686,
'ema2_period': 23.43067442492127}},
{'target': 1049.48,
'params': {'ema1_period': 25.0, 'ema2_period': 21.120811610972957}},
{'target': 1000.0,
'params': {'ema1_period': 24.939170556250275,
'ema2_period': 24.758736450266717}},
{'target': 1080.28,
'params': {'ema1_period': 22.613003726990616,
'ema2_period': 15.523232440237472}},
{'target': 1168.38,
'params': {'ema1_period': 19.312482131471945,
'ema2_period': 16.32229609405573}},
{'target': 832.18,
'params': {'ema1_period': 5.0, 'ema2_period': 31.88471517572175}},
{'target': 990.58,
'params': {'ema1_period': 9.272240873628983,
'ema2_period': 44.5393963067013}},
{'target': 940.58,
'params': {'ema1_period': 5.0, 'ema2_period': 15.34896487959813}},
{'target': 903.28,
'params': {'ema1_period': 20.276612482728982,
'ema2_period': 38.802859770958676}},
{'target': 1116.58,
'params': {'ema1_period': 20.738429168660833,
'ema2_period': 12.743828231186654}},
{'target': 851.38,
'params': {'ema1_period': 5.0, 'ema2_period': 44.276967827437716}},
{'target': 991.78,
'params': {'ema1_period': 10.690654560087063,
'ema2_period': 21.404388749369588}},
{'target': 983.08,
'params': {'ema1_period': 13.368519031692625,
'ema2_period': 45.275890440218625}},
{'target': 1128.28,
'params': {'ema1_period': 23.296772689935423,
'ema2_period': 11.13050045962189}},
{'target': 920.38,
'params': {'ema1_period': 25.0, 'ema2_period': 35.58095956641047}},
{'target': 889.88,
'params': {'ema1_period': 9.794725854384458,
'ema2_period': 35.55888935465831}},
{'target': 951.88,
'params': {'ema1_period': 8.697028538956616,
'ema2_period': 25.627089941494667}},
{'target': 1183.88,
'params': {'ema1_period': 14.27298082987814,
'ema2_period': 10.071930578041508}},
{'target': 988.98,
'params': {'ema1_period': 16.820702126430202,
'ema2_period': 48.6940519873581}},
{'target': 966.38,
'params': {'ema1_period': 9.206078675429975,
'ema2_period': 49.78446663997862}},
{'target': 991.38,
'params': {'ema1_period': 25.0, 'ema2_period': 42.70969192180956}},
{'target': 1090.28,
'params': {'ema1_period': 24.98343902319946,
'ema2_period': 14.445692015199473}},
{'target': 805.18,
'params': {'ema1_period': 8.465575456828407,
'ema2_period': 17.83907197048665}},
{'target': 1020.38,
'params': {'ema1_period': 18.28572833853306,
'ema2_period': 25.91540798373051}},
{'target': 941.18,
'params': {'ema1_period': 20.59592668849432,
'ema2_period': 29.152119970740372}},
{'target': 901.58, 'params': {'ema1_period': 5.0, 'ema2_period': 10.0}},
{'target': 961.48,
'params': {'ema1_period': 14.856341812857364,
'ema2_period': 34.81561054038492}},
{'target': 931.38,
'params': {'ema1_period': 20.659653888798854,
'ema2_period': 46.9855277271525}},
{'target': 1080.48,
'params': {'ema1_period': 15.341335454006565,
'ema2_period': 11.781981561761237}},
{'target': 1000.0,
'params': {'ema1_period': 18.077082576210326,
'ema2_period': 18.33988948568267}},
{'target': 1010.18,
'params': {'ema1_period': 22.07265091346131,
'ema2_period': 18.609541618500053}},
{'target': 880.18,
'params': {'ema1_period': 9.327668638894496,
'ema2_period': 40.892176646963904}},
{'target': 1049.28,
'params': {'ema1_period': 18.5640244586111,
'ema2_period': 10.053659091807896}},
{'target': 882.58,
'params': {'ema1_period': 5.0, 'ema2_period': 26.95944923164176}},
{'target': 1163.58,
'params': {'ema1_period': 13.779746700052113,
'ema2_period': 11.108478766994596}},
{'target': 1129.38,
'params': {'ema1_period': 19.366662459104866,
'ema2_period': 17.15760802939098}},
{'target': 1168.18,
'params': {'ema1_period': 18.141950282456357,
'ema2_period': 16.051442329052637}},
{'target': 1015.88,
'params': {'ema1_period': 25.0, 'ema2_period': 47.205351989665026}},
{'target': 1168.28,
'params': {'ema1_period': 22.33630108241034,
'ema2_period': 12.1509516793809}},
{'target': 973.98,
'params': {'ema1_period': 16.337543318886247,
'ema2_period': 41.13613021117229}},
{'target': 821.68,
'params': {'ema1_period': 13.488166159661178,
'ema2_period': 21.536572495154157}},
{'target': 918.18,
'params': {'ema1_period': 21.7369805141657,
'ema2_period': 42.47618105130706}},
{'target': 1158.28,
'params': {'ema1_period': 21.9637823599262,
'ema2_period': 13.065836896481148}},
{'target': 923.68,
'params': {'ema1_period': 10.854437512173494,
'ema2_period': 46.892927403890354}},
{'target': 1100.68,
'params': {'ema1_period': 23.057012354070434,
'ema2_period': 14.073291499922789}},
{'target': 1006.38,
'params': {'ema1_period': 19.006923921610003,
'ema2_period': 12.76269782337687}},
{'target': 1148.58,
'params': {'ema1_period': 21.56482060049935,
'ema2_period': 14.8467780066263}},
{'target': 923.18,
'params': {'ema1_period': 21.718941415777536,
'ema2_period': 33.54896502833806}},
{'target': 1158.28,
'params': {'ema1_period': 21.289861701159634,
'ema2_period': 13.862726058792687}},
{'target': 1000.0,
'params': {'ema1_period': 20.48510748382018,
'ema2_period': 20.640945825948357}},
{'target': 1009.68,
'params': {'ema1_period': 13.936427380371146,
'ema2_period': 30.140490342646068}},
{'target': 1009.08,
'params': {'ema1_period': 16.00206694681906,
'ema2_period': 26.266958206870296}},
{'target': 841.08,
'params': {'ema1_period': 9.331635608795109,
'ema2_period': 13.726008184167034}},
{'target': 985.48,
'params': {'ema1_period': 17.172182918252197,
'ema2_period': 37.249656668023086}},
{'target': 1010.28,
'params': {'ema1_period': 22.63126543309579, 'ema2_period': 50.0}},
{'target': 880.68,
'params': {'ema1_period': 5.142508234294967,
'ema2_period': 35.795516922231}},
{'target': 913.68,
'params': {'ema1_period': 13.632341450872602,
'ema2_period': 42.63769158021708}},
{'target': 1168.28,
'params': {'ema1_period': 19.584294442327476,
'ema2_period': 15.444791845246}},
{'target': 931.98,
'params': {'ema1_period': 15.928785931082647,
'ema2_period': 46.05208119901655}},
{'target': 840.38,
'params': {'ema1_period': 11.582325005508874,
'ema2_period': 26.912621319171105}},
{'target': 1009.68,
'params': {'ema1_period': 12.793390235089392,
'ema2_period': 32.74133683328118}},
{'target': 1158.38,
'params': {'ema1_period': 23.047933535470055,
'ema2_period': 12.150724459158972}},
{'target': 961.18,
'params': {'ema1_period': 17.778300558960947,
'ema2_period': 31.297158759923438}},
{'target': 1023.18,
'params': {'ema1_period': 8.635771418318257,
'ema2_period': 22.567712574377}},
{'target': 941.18,
'params': {'ema1_period': 20.784284037917093,
'ema2_period': 26.030595536998288}},
{'target': 1166.28,
'params': {'ema1_period': 18.794000816623786,
'ema2_period': 15.910464691478818}},
{'target': 1007.38,
'params': {'ema1_period': 16.618130761689574,
'ema2_period': 13.954332553326969}},
{'target': 1183.88,
'params': {'ema1_period': 14.095958885138787,
'ema2_period': 10.566009341781415}},
{'target': 940.78,
'params': {'ema1_period': 7.457500499869645,
'ema2_period': 47.11754540315395}},
{'target': 1183.88,
'params': {'ema1_period': 14.888567396985707,
'ema2_period': 10.316376491239119}},
{'target': 999.48,
'params': {'ema1_period': 18.98835128471946,
'ema2_period': 23.662395858781387}},
{'target': 949.48,
'params': {'ema1_period': 24.971109348412657,
'ema2_period': 18.98760036604802}},
{'target': 1048.78,
'params': {'ema1_period': 24.497526989814848,
'ema2_period': 22.333652519220212}},
{'target': 1116.18,
'params': {'ema1_period': 23.73256370723252, 'ema2_period': 10.0}},
{'target': 1168.18,
'params': {'ema1_period': 18.50478834011814,
'ema2_period': 16.46397043290822}},
{'target': 911.48,
'params': {'ema1_period': 8.835371518774815,
'ema2_period': 32.30291546362748}},
{'target': 879.98,
'params': {'ema1_period': 5.0459487202167335,
'ema2_period': 18.56001336792902}},
{'target': 1148.18,
'params': {'ema1_period': 24.21178223892833,
'ema2_period': 11.244789923844554}},
{'target': 962.18,
'params': {'ema1_period': 15.410286575620907, 'ema2_period': 50.0}},
{'target': 1096.68,
'params': {'ema1_period': 21.390181027727948,
'ema2_period': 11.92155540786963}},
{'target': 1177.58,
'params': {'ema1_period': 11.869915591258794, 'ema2_period': 10.0}},
{'target': 1000.0,
'params': {'ema1_period': 10.556307816364255,
'ema2_period': 10.181803416334873}},
{'target': 1139.08,
'params': {'ema1_period': 12.70110494601057,
'ema2_period': 10.041751179915543}},
{'target': 990.58,
'params': {'ema1_period': 13.533095676211609,
'ema2_period': 15.00458335103823}},
{'target': 1080.18,
'params': {'ema1_period': 21.78285238427478,
'ema2_period': 16.765673288377663}},
{'target': 947.78,
'params': {'ema1_period': 23.09329064098076,
'ema2_period': 37.80910107711412}},
{'target': 863.78,
'params': {'ema1_period': 10.612258262076857,
'ema2_period': 23.71125217656028}},
{'target': 959.88,
'params': {'ema1_period': 16.51684378123409,
'ema2_period': 24.209438295633422}},
{'target': 1148.38,
'params': {'ema1_period': 20.360446903741124,
'ema2_period': 15.499116298711595}},
{'target': 1010.68,
'params': {'ema1_period': 5.0, 'ema2_period': 12.844194652925767}},
{'target': 1183.88,
'params': {'ema1_period': 14.741470537934276, 'ema2_period': 10.0}},
{'target': 1183.88,
'params': {'ema1_period': 14.521934917946664,
'ema2_period': 10.433183075499748}},
{'target': 960.28,
'params': {'ema1_period': 7.707940930238135,
'ema2_period': 28.987389623243452}},
{'target': 1166.28,
'params': {'ema1_period': 17.954898075058626,
'ema2_period': 16.777581161834227}},
{'target': 940.68,
'params': {'ema1_period': 18.108759882883813, 'ema2_period': 50.0}},
{'target': 1016.88,
'params': {'ema1_period': 24.995807903356926,
'ema2_period': 45.27022570656085}},
{'target': 1168.28,
'params': {'ema1_period': 22.48599997993239,
'ema2_period': 12.666054955008148}},
{'target': 961.78,
'params': {'ema1_period': 19.810223957364684,
'ema2_period': 35.986763861293554}},
{'target': 879.48,
'params': {'ema1_period': 8.58158165054128,
'ema2_period': 20.8404704658319}},
{'target': 1033.28,
'params': {'ema1_period': 7.081364568924475,
'ema2_period': 24.033222271818524}},
{'target': 996.88,
'params': {'ema1_period': 23.181479709260866,
'ema2_period': 47.91322054242905}},
{'target': 1126.68,
'params': {'ema1_period': 20.126724633772042,
'ema2_period': 13.884560506154262}},
{'target': 1170.48,
'params': {'ema1_period': 14.201390971553254,
'ema2_period': 11.485030342380202}},
{'target': 923.48,
'params': {'ema1_period': 18.697284612918192,
'ema2_period': 41.33003729581113}},
{'target': 1049.28,
'params': {'ema1_period': 25.0, 'ema2_period': 23.51459613194142}},
{'target': 981.38,
'params': {'ema1_period': 24.983844076917126,
'ema2_period': 27.02267723731231}},
{'target': 973.68,
'params': {'ema1_period': 13.964468683441117,
'ema2_period': 18.19329855403838}},
{'target': 1080.08,
'params': {'ema1_period': 20.631826022379315,
'ema2_period': 17.453539083824424}},
{'target': 970.58,
'params': {'ema1_period': 15.549722003124293,
'ema2_period': 29.602369703146575}},
{'target': 961.38,
'params': {'ema1_period': 14.021460240129553,
'ema2_period': 47.70673886808691}},
{'target': 1048.78,
'params': {'ema1_period': 24.977641943727175,
'ema2_period': 22.5679194673917}},
{'target': 959.08,
'params': {'ema1_period': 23.30005193476663,
'ema2_period': 20.831122632655585}},
{'target': 881.28,
'params': {'ema1_period': 7.9924398456315355,
'ema2_period': 38.106256484478465}},
{'target': 1080.38,
'params': {'ema1_period': 17.08849767634066,
'ema2_period': 10.300420612152127}},
{'target': 922.48,
'params': {'ema1_period': 5.0, 'ema2_period': 41.38821206164775}},
{'target': 970.78,
'params': {'ema1_period': 12.594980313696764,
'ema2_period': 35.79539803251298}},
{'target': 960.78,
'params': {'ema1_period': 18.52578259660658,
'ema2_period': 27.763131747624527}},
{'target': 941.28,
'params': {'ema1_period': 11.169236834394445,
'ema2_period': 43.53722828056012}},
{'target': 1118.58,
'params': {'ema1_period': 17.7676151298498,
'ema2_period': 15.045610682755894}},
{'target': 940.78,
'params': {'ema1_period': 22.916244659368047,
'ema2_period': 27.713663247300477}},
{'target': 1012.48,
'params': {'ema1_period': 11.514894035162913,
'ema2_period': 19.25533486006794}},
{'target': 884.78,
'params': {'ema1_period': 24.797039824516364,
'ema2_period': 32.99550711728038}},
{'target': 971.48,
'params': {'ema1_period': 15.787031084425767,
'ema2_period': 38.78878866008513}},
{'target': 911.28,
'params': {'ema1_period': 5.034567903783698,
'ema2_period': 47.44685386552452}},
{'target': 937.88,
'params': {'ema1_period': 23.421709203727367,
'ema2_period': 40.7231379428959}},
{'target': 961.68,
'params': {'ema1_period': 16.577777252596135,
'ema2_period': 33.518558781275914}},
{'target': 1148.18,
'params': {'ema1_period': 24.9780060324738,
'ema2_period': 11.13199810215114}},
{'target': 1129.28,
'params': {'ema1_period': 24.9717596883115,
'ema2_period': 13.618048612634816}},
{'target': 941.48,
'params': {'ema1_period': 20.152864093244883,
'ema2_period': 31.625879906904622}},
{'target': 928.58,
'params': {'ema1_period': 18.295557713041728,
'ema2_period': 46.82376892904847}},
{'target': 1168.68,
'params': {'ema1_period': 21.413811957680675,
'ema2_period': 15.70259995201595}},
{'target': 890.98,
'params': {'ema1_period': 7.6711687975527765,
'ema2_period': 42.850069122818006}},
{'target': 900.58,
'params': {'ema1_period': 6.870747444125074,
'ema2_period': 12.274723529743445}},
{'target': 1150.28,
'params': {'ema1_period': 13.445409774891743,
'ema2_period': 12.106809771766308}},
{'target': 849.68,
'params': {'ema1_period': 12.56535553102565,
'ema2_period': 13.269968387488962}},
{'target': 852.58,
'params': {'ema1_period': 5.0, 'ema2_period': 24.538432936213617}},
{'target': 948.98,
'params': {'ema1_period': 21.044991487156803,
'ema2_period': 44.71046724949366}},
{'target': 1090.28,
'params': {'ema1_period': 24.067855786527993,
'ema2_period': 14.5277997743446}},
{'target': 1140.58,
'params': {'ema1_period': 16.054388687470038,
'ema2_period': 10.988825690014368}},
{'target': 949.98,
'params': {'ema1_period': 10.932257528973008,
'ema2_period': 38.372194576556154}},
{'target': 1120.48,
'params': {'ema1_period': 15.243512674609635,
'ema2_period': 10.867858090414622}},
{'target': 952.68,
'params': {'ema1_period': 11.128967860553141, 'ema2_period': 50.0}},
{'target': 1050.48,
'params': {'ema1_period': 20.596292065546145,
'ema2_period': 22.67189753618319}},
{'target': 913.48,
'params': {'ema1_period': 16.0256009531971,
'ema2_period': 43.422958994508335}},
{'target': 987.48,
'params': {'ema1_period': 19.710801504408934,
'ema2_period': 11.126231854305356}},
{'target': 1166.48,
'params': {'ema1_period': 19.731788301467354,
'ema2_period': 14.753197199748268}},
{'target': 969.88,
'params': {'ema1_period': 11.15466734923657,
'ema2_period': 33.379964144972256}},
{'target': 1096.78,
'params': {'ema1_period': 22.322296626351495,
'ema2_period': 11.41829262088201}},
{'target': 1060.38,
'params': {'ema1_period': 14.140943725768357,
'ema2_period': 12.218265556787987}},
{'target': 1007.28,
'params': {'ema1_period': 15.011751608101356,
'ema2_period': 14.48384836568843}},
{'target': 974.48,
'params': {'ema1_period': 7.309166472100912,
'ema2_period': 49.95728089364002}},
{'target': 1163.58,
'params': {'ema1_period': 13.036866406643677,
'ema2_period': 11.618876689970365}},
{'target': 813.68,
'params': {'ema1_period': 15.875952021946377,
'ema2_period': 18.945529780098042}},
{'target': 1000.0,
'params': {'ema1_period': 19.396318495854057,
'ema2_period': 19.509340069043986}},
{'target': 1139.08,
'params': {'ema1_period': 12.183151647729268,
'ema2_period': 10.455214390028633}},
{'target': 971.08,
'params': {'ema1_period': 15.014676280285737,
'ema2_period': 36.878499830844966}},
{'target': 1128.28,
'params': {'ema1_period': 24.51447729012598,
'ema2_period': 23.095740953349818}},
{'target': 990.18,
'params': {'ema1_period': 16.039640016653433,
'ema2_period': 27.79675829919071}}]
In [9]:
Copied!
import pandas as pd
df = pd.DataFrame(columns=["ema1_period", "ema2_period", "score"])
for i, trial in enumerate(optimizer.res):
df.loc[i] = [
int(trial["params"]["ema1_period"]),
int(trial["params"]["ema2_period"]),
trial["target"],
]
df
import pandas as pd
df = pd.DataFrame(columns=["ema1_period", "ema2_period", "score"])
for i, trial in enumerate(optimizer.res):
df.loc[i] = [
int(trial["params"]["ema1_period"]),
int(trial["params"]["ema2_period"]),
trial["target"],
]
df
Out[9]:
| ema1_period | ema2_period | score | |
|---|---|---|---|
| 0 | 13.0 | 38.0 | 921.98 |
| 1 | 5.0 | 22.0 | 875.38 |
| 2 | 13.0 | 39.0 | 920.98 |
| 3 | 18.0 | 33.0 | 971.28 |
| 4 | 25.0 | 30.0 | 864.48 |
| ... | ... | ... | ... |
| 197 | 19.0 | 19.0 | 1000.00 |
| 198 | 12.0 | 10.0 | 1139.08 |
| 199 | 15.0 | 36.0 | 971.08 |
| 200 | 24.0 | 23.0 | 1128.28 |
| 201 | 16.0 | 27.0 | 990.18 |
202 rows × 3 columns
Type 1¶
In [10]:
Copied!
from plotly import express as px
fig = px.scatter(df, x=df.index, y="score")
fig.show()
from plotly import express as px
fig = px.scatter(df, x=df.index, y="score")
fig.show()
Type 2¶
In [11]:
Copied!
import plotly.express as px
fig = px.density_contour(
df,
x="ema1_period",
y="ema2_period",
z="score",
histfunc="max",
)
fig.update_traces(contours_coloring="fill", contours_showlabels=True)
fig.show()
import plotly.express as px
fig = px.density_contour(
df,
x="ema1_period",
y="ema2_period",
z="score",
histfunc="max",
)
fig.update_traces(contours_coloring="fill", contours_showlabels=True)
fig.show()
Type 3¶
In [12]:
Copied!
import plotly.express as px
fig = px.density_heatmap(
df,
x="ema1_period",
y="ema2_period",
z="score",
nbinsx=20,
nbinsy=40,
histfunc="max",
color_continuous_scale="Viridis",
)
fig.show()
import plotly.express as px
fig = px.density_heatmap(
df,
x="ema1_period",
y="ema2_period",
z="score",
nbinsx=20,
nbinsy=40,
histfunc="max",
color_continuous_scale="Viridis",
)
fig.show()